home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / ImportPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  6KB  |  215 lines

  1. /*
  2. **    $Id: ImportPanel.c,v 1.4 92/04/21 16:58:59 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/04/21 16:58:59 $
  5. **
  6. **    Editing panel for phone unit settings
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_LIST,GAD_REPLACE,GAD_APPEND,GAD_CANCEL };
  15.  
  16. #define WIDTH    480
  17. #define HEIGHT    126
  18.  
  19. #define GADGET_WIDTH    140
  20. #define GADGET_COUNT    3
  21. #define GADGET_SPACE    (GADGET_WIDTH + ((WIDTH - 20) - (GADGET_COUNT * GADGET_WIDTH)) / (GADGET_COUNT - 1))
  22.  
  23. STATIC struct Gadget *
  24. CreateAllGadgets(struct List *PhoneList,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  25. {
  26.     struct Gadget        *Gadget;
  27.     struct NewGadget     NewGadget;
  28.     UWORD             Counter = 0;
  29.  
  30.     memset(&NewGadget,0,sizeof(struct NewGadget));
  31.  
  32.     if(Gadget = CreateContext(GadgetList))
  33.     {
  34.         NewGadget . ng_LeftEdge        = 10;
  35.         NewGadget . ng_TopEdge        = TopEdge + INTERHEIGHT + 8 + INTERHEIGHT;
  36.         NewGadget . ng_Width        = WIDTH - 20;
  37.         NewGadget . ng_Height        = 9 * 8 + 12;
  38.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_NAME_LIST_GAD);
  39.         NewGadget . ng_TextAttr        = &DefaultFont;
  40.         NewGadget . ng_GadgetID        = Counter;
  41.         NewGadget . ng_Flags        = PLACETEXT_ABOVE|NG_HIGHLABEL;
  42.         NewGadget . ng_VisualInfo    = VisualInfo;
  43.  
  44.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  45.             GT_Underscore,        '_',
  46.             GTLV_Labels,        PhoneList,
  47.             GTLV_ShowSelected,    NULL,
  48.         TAG_DONE);
  49.  
  50.         if(!Gadget)
  51.             return(NULL);
  52.  
  53.         NewGadget . ng_LeftEdge        = 10;
  54.         NewGadget . ng_TopEdge        = Gadget -> TopEdge + Gadget -> Height + INTERHEIGHT + 12;
  55.         NewGadget . ng_Width        = 140;
  56.         NewGadget . ng_Height        = 12;
  57.         NewGadget . ng_GadgetText    = LocaleString(MSG_IMPORTPANEL_REPLACE_RATES_GAD);
  58.         NewGadget . ng_GadgetID        = Counter;
  59.         NewGadget . ng_Flags        = PLACETEXT_IN;
  60.  
  61.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  62.             GT_Underscore,    '_',
  63.             GA_Disabled,    TRUE,
  64.         TAG_DONE);
  65.  
  66.         NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  67.         NewGadget . ng_GadgetText    = LocaleString(MSG_IMPORTPANEL_APPEND_RATES_GAD);
  68.         NewGadget . ng_GadgetID        = Counter;
  69.  
  70.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  71.             GT_Underscore,    '_',
  72.             GA_Disabled,    TRUE,
  73.         TAG_DONE);
  74.  
  75.         NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  76.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  77.         NewGadget . ng_GadgetID        = Counter;
  78.  
  79.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  80.             GT_Underscore,    '_',
  81.         TAG_DONE);
  82.     }
  83.  
  84.     return(Gadget);
  85. }
  86.  
  87. VOID
  88. ImportPanel(struct PhoneEntry *Entry,struct List *PhoneList)
  89. {
  90.     struct Window    *PanelWindow;
  91.     struct Gadget    *GadgetList;
  92.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  93.  
  94.     if(CreateAllGadgets(PhoneList,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  95.     {
  96.         if(PanelWindow = OpenWindowTags(NULL,
  97.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  98.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  99.             WA_Width,    WIDTH,
  100.             WA_Height,    HEIGHT,
  101.             WA_Activate,    TRUE,
  102.             WA_DragBar,    TRUE,
  103.             WA_DepthGadget,    TRUE,
  104.             WA_RMBTrap,    TRUE,
  105.             WA_DepthGadget,    TRUE,
  106.             WA_CloseGadget,    TRUE,
  107.             WA_CustomScreen,Screen,
  108.             WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | LISTVIEWIDCMP,
  109.             WA_Title,    LocaleString(MSG_IMPORTPANEL_IMPORT_RATES_TXT),
  110.         TAG_DONE))
  111.         {
  112.             struct IntuiMessage    *Massage;
  113.             ULONG             Class,Code;
  114.             struct Gadget        *Gadget;
  115.             BYTE             Terminated = FALSE;
  116.             LONG             Selected = ~0;
  117.  
  118.             PushWindow(PanelWindow);
  119.  
  120.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  121.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  122.             GT_RefreshWindow(PanelWindow,NULL);
  123.  
  124.             while(!Terminated)
  125.             {
  126.                 WaitPort(PanelWindow -> UserPort);
  127.  
  128.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  129.                 {
  130.                     Class    = Massage -> Class;
  131.                     Code    = Massage -> Code;
  132.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  133.  
  134.                     GT_ReplyIMsg(Massage);
  135.  
  136.                     if(Class == IDCMP_VANILLAKEY)
  137.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  138.  
  139.                     if(Class == IDCMP_CLOSEWINDOW)
  140.                         Terminated = TRUE;
  141.  
  142.                     if(Class == IDCMP_GADGETUP)
  143.                     {
  144.                         switch(Gadget -> GadgetID)
  145.                         {
  146.                             case GAD_LIST:    if(Entry != Phonebook[Code])
  147.                                     {
  148.                                         if(Selected == ~0)
  149.                                         {
  150.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REPLACE],PanelWindow,NULL,
  151.                                                 GA_Disabled,    FALSE,
  152.                                             TAG_DONE);
  153.  
  154.                                             GT_SetGadgetAttrs(GadgetArray[GAD_APPEND],PanelWindow,NULL,
  155.                                                 GA_Disabled,    FALSE,
  156.                                             TAG_DONE);
  157.                                         }
  158.  
  159.                                         Selected = Code;
  160.                                     }
  161.                                     else
  162.                                     {
  163.                                         if(Selected != ~0)
  164.                                         {
  165.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REPLACE],PanelWindow,NULL,
  166.                                                 GA_Disabled,    TRUE,
  167.                                             TAG_DONE);
  168.  
  169.                                             GT_SetGadgetAttrs(GadgetArray[GAD_APPEND],PanelWindow,NULL,
  170.                                                 GA_Disabled,    TRUE,
  171.                                             TAG_DONE);
  172.  
  173.                                             Selected = ~0;
  174.                                         }
  175.                                     }
  176.  
  177.                                     break;
  178.  
  179.                             case GAD_APPEND:
  180.                             case GAD_REPLACE:
  181.  
  182.                                     if(Gadget -> GadgetID == GAD_REPLACE)
  183.                                     {
  184.                                         FreeTimeDateList((struct List *)&Entry -> TimeDateList);
  185.  
  186.                                         CopyTimeDateList((struct List *)&Phonebook[Selected] -> TimeDateList,(struct List *)&Entry -> TimeDateList,FALSE);
  187.                                     }
  188.                                     else
  189.                                         CopyTimeDateList((struct List *)&Phonebook[Selected] -> TimeDateList,(struct List *)&Entry -> TimeDateList,TRUE);
  190.  
  191.                                     Terminated = TRUE;
  192.  
  193.                                     break;
  194.  
  195.                             case GAD_CANCEL:Terminated = TRUE;
  196.  
  197.                                     break;
  198.  
  199.                             default:    break;
  200.                         }
  201.                     }
  202.                 }
  203.             }
  204.  
  205.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  206.  
  207.             PopWindow();
  208.  
  209.             CloseWindow(PanelWindow);
  210.         }
  211.  
  212.         FreeGadgets(GadgetList);
  213.     }
  214. }
  215.